package ua.kpi.ipsa.expert.api.net;

import java.rmi.*;
import java.util.*;

/**
 * 
 * @author doctorpro
 *
 */
public interface RemoteUserListener extends Remote {
	
	/**
	 * 
	 * @param userLogin
	 * @throws RemoteException
	 */
	public void userRemoved(String userLogin) throws RemoteException;
	
	/**
	 * 
	 * @param userLogin
	 * @throws RemoteException
	 */
	public void userAdded(String userLogin) throws RemoteException;
	
	/**
	 * Method is called to notify about user logged in
	 * 
	 * @param userLogin
	 */
	public void userLoggedIn(String userLogin) throws RemoteException;

	/**
	 * Method is called to notify about user logged out
	 * 
	 * @param userLogin
	 */
	public void userLoggedOut(String userLogin) throws RemoteException;

	/**
	 * 
	 * @param methodName
	 *            - the name of the method user invoked
	 * @param userArguments
	 *            - some volatile arguments relative to the method invokation
	 */
	public void userAction(String login, String methodName, String marker,
			Map<String, String> userArguments) throws RemoteException;
}
